# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your Archipelago options are valid at this site:
#        https://archipelago.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Touhou Eiyashou ~ Imperishable Night Template

game: Touhou Eiyashou ~ Imperishable Night
requires:
  version: 0.6.7 # Version of Archipelago required for this yaml to work as expected.
  game:
    Touhou Eiyashou ~ Imperishable Night: 1.1.3 # Version of the world required for this yaml to work as expected.

Touhou Eiyashou ~ Imperishable Night:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  mode:
    # Which mode you are playing on.
    # Practice Mode: You need to unlock the stage in order to progress.
    # Normal Mode: The resources are only given at Stage 1.
    # Spell Practice: Each Spell Card in Spell Practice are locations.
    # Restriction in life, bomb or difficulty for stages 3/4 and 5/6 and character are the only logical gate
    practice: 50
    spell_practice: 0
    normal: 0
    practice_and_spell_practice: 0
    normal_and_spell_practice: 0

  stage_unlock:
    # [Practice] How the stage unlock are grouped in Practice mode and for the Extra Stage if it's apart
    # Global: No group
    # By Character: Stage group by character
    global: 50
    by_character: 0

  progressive_stage:
    # [Practice] In Practice mode, determine if stages are unlocked progressively
    'false': 0
    'true': 50

  exclude_lunatic:
    # [Practice/Normal] If the Lunatic difficulty is excluded
    'false': 50
    'true': 0

  characters:
    # Which characters are included.
    # All solo characters will be unlocked by default. If both solo and teams are included, no team will be unlocked at the start.
    teams_only: 50
    solo_only: 0
    all_characters: 0

  spell_cards_teams:
    # [Spell Practice] How many teams will have spell practice check. (Determine the number of time you have to do a spell card)
    # The starting team will always be one of the teams who have access to spell practice.
    # Solo character will always have spell cards if they are enabled.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 2
    # Maximum value is 4
    4: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-2-4: 0 # random value between 2 and 4

  number_life_mid:
    # [Practice/Normal] Number of life the randomizer expect you to have before facing Keine, Reimu and Marisa
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  number_bomb_mid:
    # [Practice/Normal] Number of bombs the randomizer expect you to have before facing Keine, Reimu and Marisa
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  difficulty_mid:
    # [Practice/Normal] The difficulty expected in order to face Keine, Reimu and Marisa (Starting from Lunatic and got to Easy)
    lunatic: 50
    hard: 0
    normal: 0
    easy: 0

  number_life_end:
    # [Practice/Normal] Number of life the randomizer expect you to have before facing Reisen, Eirin and Kaguya
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  number_bomb_end:
    # [Practice/Normal] Number of bombs the randomizer expect you to have before facing Reisen, Eirin and Kaguya
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  difficulty_end:
    # [Practice/Normal] The difficulty expected in order to face Reisen, Eirin and Kaguya (Starting from Lunatic and got to Easy)
    lunatic: 50
    hard: 0
    normal: 0
    easy: 0

  extra_stage:
    # [Practice/Normal] Determine if the extra stage is included
    # Linear: The extra stage is considered as the 7th stage. Solo character will still have a separate item to unlock the extra stage.
    # Apart: The extra stage has it's own item for it to be unlocked
    # This option will follow the rule of how the stage are unlocked in Practice Mode (Global, By Character or By Shot Type)
    exclude: 50
    include_linear: 0
    include_apart: 0

  number_life_extra:
    # [Practice/Normal] Number of life the randomizer expect you to have before facing Mokou
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  number_bomb_extra:
    # [Practice/Normal] Number of bombs the randomizer expect you to have before facing Mokou
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  difficulty_check:
    # [Practice/Normal] If checks are separated by difficulty.
    'false': 50
    'true': 0

  check_multiple_difficulty:
    # [Practice/Normal] For difficulty check, choose if the check of the highest difficulty include the check of the lower difficulties that are unlocked. Can be changed later.
    'false': 50
    'true': 0

  time_check:
    # [Practice/Normal] If having enough Time and finishing (by dying or clearing it) the Last Spell at the end of a stage grant a check
    # Only stages where the Time Goal is above 0 are concerned (stage 1 to 5)
    'false': 50
    'true': 0

  time:
    # [Practice/Normal] Determine if the abilty to gain Time is randomized.
    'false': 50
    'true': 0

  both_stage_4:
    # [Practice] Determine if each team has access to the stage 4A and 4B or only the one they are assigned
    'false': 0
    'true': 50

  starting_spell_card_count:
    # [Spell Practice] The number of Spell Card that will be automatically unlocked at the start.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 3
    # Maximum value is 10
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-3-10: 0 # random value between 3 and 10

  spell_card_difficulties:
    # [Spell Practice] Choose which Spell Card can appear based on their difficulty. It must have at least one difficulty
    # Last Word are in the Extra Difficulty.
    # If empty, all difficulties will be included.
    # 
    # Valid Values: ["Easy", "Normal", "Hard", "Lunatic", "Extra"]
    ['Easy', 'Normal', 'Hard', 'Lunatic', 'Extra']

  spell_card_stages:
    # [Spell Practice] Choose which Spell Card can appear based on their stage. It must have at least one stage.
    # If empty, all stages will be included.
    # If the combination of Spell Card Difficulties and Spell Card Stages exclude all Spell Cards from the game,
    # then all Spell Cards from Stage 1 will be included to avoid having no Spell Cards at all
    # 
    # Valid Values: ["Stage 1", "Stage 2", "Stage 3", "Stage 4A", "Stage 4B", "Stage 5", "Stage 6A", "Stage 6B", "Extra", "Last Word"]
    ['Stage 1', 'Stage 2', 'Stage 3', 'Stage 4A', 'Stage 4B', 'Stage 5', 'Stage 6A', 'Stage 6B', 'Extra', 'Last Word']

  max_spell_card_count:
    # [Spell Practice] The maximum number of Spell Card that can be unlocked.
    # Starting Spell Card is counted in this limit.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 10
    # Maximum value is 222
    222: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-10-222: 0 # random value between 10 and 222

  duplicate_spell_cards:
    # [Spell Practice] Percentage of fillers replaced by a duplicate Spell Cards in the item pool. This will allow out of logic checks.
    # It is applied before traps.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  excluded_spell_cards:
    # [Spell Practice] Choose which Spell Cards will be excluded from the item pool.
    # Spell cards are identified by their id. They must be written like this: "XXX" ("001" to "222")
    []

  included_spell_cards:
    # [Spell Practice] Choose which Spell Cards will be included in the item pool. They will be included even if they should be excluded by other filters.
    # Spell cards are identified by their id. They must be written like this: "XXX" ("001" to "222")
    []

  goal:
    # Determine the goal.
    # Default to Kaguya when the selected goal is invalid or default to Kaguya's Treasure if Spell Card Practice is the only mode.
    # 
    # [Practice/Normal] Eirin/Kaguya/Mokou: You must beat the selected boss
    # [Practice/Normal] All Bosses: You must beat all the bosses (Mokou only when the Extra Stage is active)
    # [Spell Practice] Kaguya's Treasures: You must collect the 5 treasures.
    # [Spell Practice] Capture Spell Cards: You must capture a set number of unique Spell Cards. (Accessibility full is forced)
    eirin: 0
    kaguya: 50
    mokou: 0
    all_bosses: 0
    kaguya_treasures: 0
    capture_spell_cards: 0

  ending_required:
    # [Practice/Normal] How many time do you need to beat the required boss if it's the selected goal.
    once: 50
    all_characters: 0

  treasure_location:
    # [Spell Practice] If the goal is set to Kaguya's Treasure, choose where the treasure are located.
    # Default to Local if the selected option is not possible (Ex: Spell Cards excluded)
    # Kaguya: They are on Kaguya's Spell Cards
    # Last Word: They are on Last Word's Spell Cards
    # Local: They are anywhere in the game
    # Anywhere: They are anywhere in the multiworld
    kaguya: 50
    last_word: 0
    local: 0
    anywhere: 0

  treasure_final_spell_card:
    # [Spell Practice] If the goal is Kaguya's Treasures, which Spell Card is set has the victory condition and is unlocked with the 5 treasure
    # The value is the ID of the Spell Card.
    # If the Spell Card is excluded, it will do -1 to the spell card until it found a valid one.
    # Default to the last Spell Card of Kaguya.
    # 
    # Quick references by stages:
    # Stage 1:   1-13
    # Stage 2:   14-32
    # Stage 3:   33-54
    # Stage 4A:  55-77
    # Stage 4B:  78-100
    # Stage 5:   101-119
    # Stage 6A:  120-147
    # Stage 6B:  148-191
    # Extra:     192-205
    # Last Word: 206-222
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 222
    191: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-222: 0 # random value between 1 and 222

  capture_spell_cards_stage:
    # [Spell Practice] If the goal is set to Capture Spell Cards, choose from which stages the Spell Cards count for the goal.
    # If empty, all stages will be included.
    # If filters exclude all spell card of the selected stages, all stages will be included.
    # 
    # Valid Values: ["Stage 1", "Stage 2", "Stage 3", "Stage 4A", "Stage 4B", "Stage 5", "Stage 6A", "Stage 6B", "Extra", "Last Word"]
    ['Stage 1', 'Stage 2', 'Stage 3', 'Stage 4A', 'Stage 4B', 'Stage 5', 'Stage 6A', 'Stage 6B', 'Extra', 'Last Word']

  capture_spell_cards_count:
    # [Spell Practice] If the goal is set to Capture Spell Cards, choose how many unique Spell Cards you need to capture to win.
    # If the number is higher than the available Spell Cards based on the filters, it will be reduced to the maximum possible.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 5
    # Maximum value is 222
    50: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-5-222: 0 # random value between 5 and 222

  death_link:
    # When you die, everyone who enabled death link dies. Of course, the reverse is true too. Can be changed later.
    # In Spell Practice, you can only receive Death Links.
    'false': 50
    'true': 0

  death_link_trigger:
    # When does a death link is triggerd. Can be changed later.
    # Life: Send a death link when losing a life
    # Game Over: Send a death link when getting a game over
    life: 50
    game_over: 0

  death_link_amnesty:
    # Number of death before sending a DeathLink. Can be changed later.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 10
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-10: 0 # random value between 0 and 10

  ring_link:
    # Whether your in-level Power Point gain/loss is linked to other players. Can be changed later.
    'false': 50
    'true': 0

  limit_lives:
    # [Practice/Normal] Limit on the maximum number of lives you can have. It only apply on the client, not on the item pool or logic. Can be changed later.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    8: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  limit_bombs:
    # [Practice/Normal] Limit on the maximum number of bombs you can have. It only apply on the client, not on the item pool generation or logic. Can be changed later
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    8: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  traps:
    # Percentage of fillers that are traps
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  power_point_trap:
    # Weight of the -50% power point trap.
    # This trap reduce the power point by 50%
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    20: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  bomb_trap:
    # Weight of the -1 bomb trap.
    # This trap remove 1 bomb
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  life_trap:
    # Weight of the -1 life trap.
    # This trap remove 1 life
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  reverse_movement_trap:
    # Weight of the Reverse Movement trap.
    # This trap reverse the movement of the player
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    20: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  aya_speed_trap:
    # Weight of the Aya speed trap.
    # This trap make the speed of the player more extreme (faster normally, slower focus)
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    20: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  freeze_trap:
    # Weight of the freeze trap.
    # This trap freeze the player for a short amount of time
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  power_point_drain_trap:
    # Weight of the power point drain trap.
    # This trap drain the power point of the player (1 power point per second)
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    15: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  reverse_human_youkai_gauge_trap:
    # Weight of the reverse human youkai trap.
    # This trap make the humain/Youkai gauge gain reversed but not the effect
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    15: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  extend_time_goal_trap:
    # Weight of the extend time goal trap.
    # Add 25% to the time requirement of the current stage
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    15: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with the specified amount of these items. Example: "Bomb: 1"
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
